package com.cmc.cloud.cmclink.doc.service.si;

import java.util.Collection;
import java.util.List;

import com.cmc.cloud.cmclink.doc.vo.confirmnoticevo.ConfirmNoticeDetailRespVO;
import com.cmc.cloud.cmclink.doc.vo.confirmnoticevo.ConfirmNoticePageReqVO;
import com.cmc.cloud.cmclink.doc.vo.confirmnoticevo.ConfirmNoticeRejectReqVO;
import com.cmc.cloud.cmclink.doc.vo.confirmnoticevo.ConfirmNoticeRespVO;
import com.cmes.framework.common.pojo.PageResult;

/**
 * 确认装货港更改通知 Service 接口
 *
 * @author 集运管理员
 */
public interface ConfirmNoticeService {
    /**
     * 获得确认装货港更改通知
     *
     * @param id 编号
     * @return 确认装货港更改通知
     */
    ConfirmNoticeDetailRespVO getConfirmNotice(Long id);

    /**
     * 获得确认装货港更改通知分页
     *
     * @param pageReqVO 分页查询
     * @param exImType 进出口类型
     * @return 确认装货港更改通知分页
     */
    PageResult<ConfirmNoticeRespVO> getConfirmNoticePage(ConfirmNoticePageReqVO pageReqVO, String exImType);

    /**
     * 获得确认装货港更改通知note
     *
     * @param id noteId
     */
    void noteConfirmNotice(Long id);

    /**
     * 获得确认装货港更改通知batch-note
     *
     * @param ids noteIds
     */
    void noteBatchConfirmNotice(Collection<Long> ids);

    /**
     * 批量生成通知
     *
     * @param blnoIds
     * @param noticeType
     * @param noticeContent
     * @param operateType
     * @return voids
     */
    void createConfirmNotice(List<Long> blnoIds, String noticeType, String noticeContent,String operateType);

    /**
     * 生成单个通知
     * @param blnoId 旧提单id
     * @param operateType
     * @param noticeType
     * @return void
     */
    void createSingleNotice(Long blnoId, String operateType, String noticeType);

    /**
     * 通过通知
     * @param   confirmNoticeRejectReqVO
     * @return void
     */
    void approveNotice(ConfirmNoticeRejectReqVO confirmNoticeRejectReqVO);

    /**
     * 拒绝通知
     * @param   confirmNoticeRejectReqVO
     * @return void
     */
    void rejectNotice(ConfirmNoticeRejectReqVO confirmNoticeRejectReqVO);

    /**
     * 取消通知
     *
     * @param id 通知主表id
     */
    void cancelNotice(Long id);
}
